package mariangela;

import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;

public class TastiToMove extends JLabel  implements MouseListener{
    public static String direzione = "";
    static boolean inUseMouse = false;
    private int larghezzaPulsante;
    private int altezzaPulsante;
    private String direzioneAuto;
    private Thread movimento;
    private String tasto;
    private boolean mouseOn;

    public TastiToMove (int pLarghezzaPulsante, int pAltezzaPulsante, String pDirezioneAuto, Point pLocazioneTasto){
        setLocation(pLocazioneTasto);
        this.larghezzaPulsante = pLarghezzaPulsante;
        this.altezzaPulsante = pAltezzaPulsante;
        this.direzioneAuto = pDirezioneAuto;
        mouseOn = false;
        setSize(this.larghezzaPulsante, this.altezzaPulsante);
        addMouseListener(this);
        forTast();
    }
    private void forTast()
    {
        if(this.direzioneAuto.equals("right"))
            tasto = "s";
        else if(this.direzioneAuto.equals("left"))
            tasto = "a";
    }
    @Override
    public void paint(Graphics gg)
    {
        Graphics2D g = (Graphics2D) gg;
        g.setPaint(new GradientPaint(0,0,Color.GREEN, this.larghezzaPulsante, this.altezzaPulsante,Color.BLUE));
        if(mouseOn)
        {
            if(VisualFrame.pause)
                g.setPaint(new GradientPaint(0,0,Color.CYAN,this.larghezzaPulsante,this.altezzaPulsante,Color.YELLOW));
            else
                g.setPaint(new GradientPaint(0,0,Color.GRAY,this.larghezzaPulsante,this.altezzaPulsante,Color.RED));
        }
        g.fillRect(0, 0, this.larghezzaPulsante, this.altezzaPulsante);
        g.setColor(Color.BLACK);
        g.drawRect(0, 0, this.larghezzaPulsante-1, this.altezzaPulsante-1);
        g.setColor(Color.RED);
        g.setFont(g.getFont().deriveFont(Font.BOLD));
        g.drawString(this.tasto, 2, 10);
    }

    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}

    public void mouseEntered(MouseEvent e) {
        direzione = this.direzioneAuto;
        this.mouseOn = true;
        if(!VisualFrame.pause && movimento == null && !VisualFrame.inUseKey)
        {
            inUseMouse = true;
            movimento = new MoveCars(this.direzioneAuto, VisualFrame.xy1, VisualFrame.autoUser, 15);
            movimento.start();
        }
        repaint();
    }

    public void mouseExited(MouseEvent e) {
           mouseOn = false;
        if(this.movimento != null)
        {
            inUseMouse = false;
            direzione = "";
            movimento.stop();
            movimento = null;
        }
        repaint();
    }

}
